﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using ProcelNasEscolas.Model.Fichas;
using ProcelNasEscolas.Model.Interfaces;
using ProcelNasEscolas.Model.Respostas;
using ProcelNasEscolas.Model;

namespace ProcelNasEscolas.Data
{
    public class RespostaBaseDao : AbstractCrudDao<RespostaBaseData>, IRespostaBaseDao 
    {
        public RespostaBase ToModelObject(RespostaBaseData respostaBaseData)
        {
            RespostaBase respostaBaseModel = new RespostaBase();
    
            switch (respostaBaseData.GetType().Name)
            {
                case "RespostaNumericaData": 
                {
                        respostaBaseModel = new RespostaNumericaDao().ToModelObject((RespostaNumericaData)respostaBaseData);
                };
                    break;
                case "RespostaTextoData":
                    {
                        respostaBaseModel = new RespostaTextoDao().ToModelObject((RespostaTextoData)respostaBaseData);
                    };
                    break;
                case "RespostaAlternativaData":
                    {
                        respostaBaseModel = new RespostaAlternativaDao().ToModelObject((RespostaAlternativaData)respostaBaseData);
                    };
                    break;
                case "RespostaConsumoData":
                    {
                        respostaBaseModel = new RespostaConsumoDao().ToModelObject((RespostaConsumoData)respostaBaseData);
                    };
                    break;
            }

            return respostaBaseModel;
        }

        public RespostaBaseData CreateDataObject(RespostaBase respostaModel)
        {
            RespostaBaseData respostaData = new RespostaBaseData();

            switch (respostaModel.GetType().Name)
            {
                case "RespostaNumerica":
                    {
                        respostaData = new RespostaNumericaDao().CreateDataObject((RespostaNumerica)respostaModel);
                    };
                    break;
                case "RespostaTexto":
                    {
                        respostaData = new RespostaTextoDao().CreateDataObject((RespostaTexto)respostaModel);
                    };
                    break;
                case "RespostaAlternativa":
                    {
                        respostaData = new RespostaAlternativaDao().CreateDataObject((RespostaAlternativa)respostaModel);
                    };
                    break;
                case "RespostaConsumo":
                    {
                        respostaData = new RespostaConsumoDao().CreateDataObject((RespostaConsumo)respostaModel);
                    };
                    break;
            }

            return respostaData;
        }
    }
}
